有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我可以将浮点传递给Double的构造函数?

在下面的代码中,我从doublefloatString构造了一些Double变量。但是,根据文档,Double只有接受doubleString而不是float的构造函数。那么这段代码是如何编译的呢

Double d1 = new Double(2.5);
Double d2 = new Double(2.5f); //Why can I pass a float here?
Double d3 = new Double("2.5");

共 (2) 个答案

  1. # 1 楼答案

    由于float通常可以转换为double而不会丢失精度,因此float可以自动加宽为double。有关Java将自动扩展哪些类型的信息,请参见Widening Primitive Conversion

    链接文档中指出了有关float/double转换的例外情况:

    A widening primitive conversion from float to double that is not strictfp may lose information about the overall magnitude of the converted value.

  2. # 2 楼答案

    有两种类型的转换,加宽转换(隐式)和缩小转换(显式完成)

    加宽>;将较低范围转换为较大范围

    收窄>;将较大范围转换为较低范围(这会导致数据丢失)

    所以float可以类型转换为Double,find picturization viewenter image description here